کانال بله, جهت پشتیبانی و اطلاع رسانی کانال بله, جهت پشتیبانی و اطلاع رسانی
عضویت

برنامه مقایسه دو عکس

برنامه مقایسه دو عکس
شرح مختصر پروژه

برنامه مقایسه دو عکس

توضیحات پروژه

برنامه مقایسه دو عکس

برنامه مقایسه دو عکس

در این برنامه دوعکس دلخواه که دارای ابعاد یکسانی هستند مقایسه می شوند و مقدار شباهت و اختلاف آن ها به کاربر اعلام می گردد. ابتدا باید با کلیک برروی دو نوشته عکس ها انتخاب شوند، برای این کار از شیء OpenFileDialog استفاده کرده و آدرس عکس های انتخابی را در دو متغیر با نام های fname1 و fname2 ذخیره می نماییم:

openFileDialog1.FileName = "";
 
openFileDialog1.Title = "Images"; 
 
openFileDialog1.Filter = "All Images|*.jpg; *.bmp; *.png"; 
 
openFileDialog1.ShowDialog(); 
 
if (openFileDialog1.FileName.ToString() != "")
 
{
 
fname1 = openFileDialog1.FileName.ToString();
 
}
 
openFileDialog2.FileName = ""; 
 
openFileDialog2.Title = "Images"; 
 
openFileDialog2.Filter = "All Images|*.jpg; *.bmp; *.png"; 
 
openFileDialog2.ShowDialog();
 
if (openFileDialog2.FileName.ToString() != "")
 
{
 
fname2 = openFileDialog2.FileName.ToString();
 
}

حال دو بیتمپ از این دو آدرس در دو متغیر img1 و img2 می سازیم. برای نمایش پیشرفت مقایسه از یک ProgressBar کمک می گیریم و مقدار نهایی این شیء را برابر با تعداد پیکسل موجود در طول عکس قرار می دهیم و به ازای هر پیکسلی که مقایبسه می شود یک واحد به مقدار پیشرفت ProgressBar می افزاییم:

if (img1.Width == img2.Width && img1.Height == img2.Height)
 
{
 
for (int i = 0; i < img1.Width; i++)
 
{
 
for (int j = 0; j < img1.Height; j++)
 
{
 
img1_ref = img1.GetPixel(i, j).ToString();
 
img2_ref = img2.GetPixel(i, j).ToString();
 
if (img1_ref != img2_ref)
 
{
 
count2++;
 
flag = false;
 
break;
 
}
 
count1++;
 
}
 
progressBar1.Value++;
 
}
 
if (flag == false)
 
MessageBox.Show("Sorry, Images are not same , " + count2 + " wrong pixels found");
 
else
 
MessageBox.Show(" Images are same , " + count1 + " same pixels found and " + count2 + " wrong pixels found");
 
}
 
else
 
MessageBox.Show("can not compare this images");
 
this.Dispose();
 
}

ابتدا هم بعد بودن این دو عکس چک می شود در در صورت برقرار نبودن این شرط پیغامی مبنی بر عدم توانایی مقایسه اعلام می شود.

مرحله اصلی مقایسه بدین صورت است که رنک تک تک پیکسل های دوعکس با هم مقایسه می شوند. این عمل با دستور GetPixel انجام شده و نتیجه برای هرپیکسل در متغیرهای img1_ref و img2_ref ذخیره می شوند. اگر رنگ این دو پیکسل با هم برابر بود که به مقدار count1 یک واحد اضافه می گردد در غیر اینصورت به مقدار count2 یک واحد اضافه می شود. اگر تمامی این پیکسلها از نظر رنگ برابر باشند پیغامی مبنی بر برابر بودن رنگ دو عکس ظاهر می شود در غیر اینصورت دیگر دو عکس یکی نیستند و تعداد پیکسل های مشابه و پیکسل های غیرمشابه از نظر رنگ نمایش داده می شوند.

1394/07/27 12598 1152
رمز عبور : tahlildadeh.com یا www.tahlildade.com
نظرات شما

نظرات خود را ثبت کنید...